package pers.wensheng.patterns.structural_pattern.combination_pattern.transparent_combination_pattern;

import pers.wensheng.patterns.structural_pattern.combination_pattern.transparent_combination_pattern.entity.Menu;
import pers.wensheng.patterns.structural_pattern.combination_pattern.transparent_combination_pattern.entity.MenuItem;

/**
 * 透明组合模式
 * 组合模式 或 部分整体模式
 * 尽量都用透明组合模式
 *
 * 组合模式正是应树形结构而生，所以组合模式的使用场景就是出现树形结构的地方。
 * 比如：文件目录显示，多级目录呈现等树形结构数据的操作。
 */
public class Client {
    public static void main(String[] args) {
        Menu menu1 = new Menu("菜单管理", 2);
        menu1.add(new MenuItem("页面访问",3));
        menu1.add(new MenuItem("展开访问",3));
        menu1.add(new MenuItem("编辑访问",3));
        menu1.add(new MenuItem("删除访问",3));
        menu1.add(new MenuItem("新增访问",3));

        Menu menu2 = new Menu("权限管理", 2);
        menu2.add(new MenuItem("页面访问",3));
        menu2.add(new MenuItem("提交保存",3));

        Menu menu3 = new Menu("角色管理", 2);
        menu3.add(new MenuItem("页面访问",3));
        menu3.add(new MenuItem("新增角色",3));
        menu3.add(new MenuItem("修改角色",3));

        Menu menu = new Menu("系统管理", 1);
        menu.add(menu1);
        menu.add(menu2);
        menu.add(menu3);

        menu.print();
    }
}
